package org.springblade.modules.admin.service;

import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.admin.dto.plan.score.PlanScoreSearchDTO;
import org.springblade.modules.admin.entity.MaintainPlanContent;
import org.springblade.modules.admin.entity.PlanCheckHistoryScore;
import org.springblade.modules.admin.vo.PlanCheckHistoryScoreVO;
import org.springblade.modules.admin.vo.PlanTemplateVO;
import org.springblade.modules.admin.vo.plan.store.ScoreByCountVo;
import org.springblade.modules.admin.vo.plan.store.ScoreByDetailVo;
import org.springblade.modules.admin.vo.plan.store.ScoreCheckVo;
import org.springblade.modules.admin.vo.plan.store.WxByPlanHistoryVo;
import org.springblade.modules.admin.vo.score.WxScoreFailureVo;

import java.util.List;

/**
 * @author zcc
 * @version 1.0
 * @date 2024/1/15 13:46
 */
public interface MaintainPlanScoreService extends BaseService<MaintainPlanContent> {

	/**
	 * 获取评分的保养详情
	 * @param planId 工单id
	 * @return 数据集
	 */
    ScoreByDetailVo getByPlanDetail(Long planId);

	/**
	 * 获取保养工作项
	 * @param planId 工单id
	 * @param templateId 模板id
	 * @return 数据集
	 */
	List<PlanTemplateVO> getPlanWorkItem(Long planId, Long templateId,Long checkHistoryId);

	List<ScoreByCountVo> getScoreByCountDetail(String planIds);

	/**
	 * 获取保养工作项里面的评分信息
	 * @param checkHistoryId 工作项
	 * @param scoreDimensionId 工作项绑定评分模板
	 * @param isUpdate true 表示更新,false新增
	 * @return 数据集
	 */
	PlanCheckHistoryScore getScoreTemplate(Long checkHistoryId, Long scoreDimensionId, Boolean isUpdate);


	/**
	 * 添加更新评分
	 * @param planCheckHistoryScoreVO 参数值
	 * @return 数据集
	 */
	Boolean saveAndUpdateScore(PlanCheckHistoryScoreVO planCheckHistoryScoreVO);

	/**
	 * 保养-工单级别最终评分的结果更新
	 * @param planCheckHistoryScoreVO 参数值
	 * @return 结果集
	 */
	Boolean updatePlanScore(PlanCheckHistoryScoreVO planCheckHistoryScoreVO);


	/**
	 * 删除工作项评分
	 * @param checkHistoryId
	 * @return 数据集
	 */
	Boolean delete(Long checkHistoryId);

	/**
	 * 保养工单提交，验证未评分信息
	 * @param planId 工单id
	 * @return  数据集
	 */
	ScoreCheckVo planScoreCheck(Long planId);


	/**
	 * 获取维修评分信息
	 * @param workId
	 * @return
	 */
	PlanCheckHistoryScore getScoreWxInfo(Long workId);

	/**
	 * 维修-工单级别最终评分的结果更新
	 * @param planCheckHistoryScoreVO 参数值
	 * @return 结果集
	 */
	Boolean updatePlanScoreWx(PlanCheckHistoryScoreVO planCheckHistoryScoreVO);


	/**
	 * 获取维修工单评分进度
	 * @param planIds 工单ids
	 * @return 数据集
	 */

	List<ScoreByCountVo> getScoreByCountDetailWx(String planIds);


	/**
	 * 工作项跳转上一个
	 * @param templateId 当前模板id
	 * @return 数据集
	 */
	ScoreCheckVo planScoreCheckV2(Long planId,Long templateId);


	/**
	 * 保养-维修工单列表
	 * @param planScoreSearchDTO 查询条件
	 * @return
	 */
	List<WxByPlanHistoryVo> getWxByPlanHistoryList(PlanScoreSearchDTO planScoreSearchDTO);


	/**
	 * 获取维修评分，部门判断的结果集
	 * @param planId 工单id
	 * @return 数据集
	 */
	List<WxScoreFailureVo> getWxScoreFailureList(Long planId);
}
